// @author: caoshi
// @date: 2021-06-18 07:27
// Viper 加载 yaml 配置文件
package initialize

import (
	"academic/common"
	"academic/global"
	"fmt"
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
)

func Viper() *viper.Viper {
	v := viper.New()
	v.SetConfigFile(common.ConfigFile)
	v.SetConfigType("yaml")
	err := v.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("加载yaml配置文件失败! %s\n", err))
	}
	v.WatchConfig()
	v.OnConfigChange(func(e fsnotify.Event) {
		fmt.Println("yaml配置文件被修改了: ", e.Name)
		if err := v.Unmarshal(&global.GvaConfig); err != nil {
			fmt.Printf("配置文件修改有误: %s \n", err)
		}
	})

	// 绑定全局常量
	if err := v.Unmarshal(&global.GvaConfig); err != nil {
		fmt.Printf("配置文件有误! %s \n", err)
	}
	return v
}
